<?php
namespace app\admin\controller;

use think\Controller;
use think\Db;
use app\admin\model\Index as IndexModel;
use think\Session;

class Index extends Controller
{
    // 登陆页面
    public function index()
    {
        // 加载登录页面
        return view('index/login');

    }

    // 后台首页
    public function login()
    {

        $admin = Session::get('nodeList');
        if (empty($admin)) {
            $this->redirect(url('/admin/Index/index'));
        }
        // 统计评论数量
        $comment = Db::name('note_comment')->count('id');
        $response = Db::name('comment_response')->count('id');
        $comment = $comment+$response;
        // 统计用户数量
        $user = Db::name('user')->count('id');
        // 统计笔记数量
        $note = Db::name('user_note')->count('id');
        // 统计推荐数量
        $top = Db::name('user_note')->where('top',1)->count('id');

        // 渲染后台主页页面
        return $this->fetch('index/index',[
            'comment' => $comment,
            'user' => $user,
            'note' => $note,
            'top' => $top
        ]);
    }

    // 登录处理
    public function loginDo()
    {
        // 获取传过来的信息
        $user = input('post.');

        // 数据库查询个人信息
        $info = db('admin')->where('tel','eq',$user['name'])->whereOr('email','eq',$user['name'])->select();
//

        // 如果没有查到数据则没有该管理员
        if (empty($info)){
            return $this->error('对不起没有该管理员!!!');
        }

        // 判断该管理员是否被封禁
        if ($info['0']['status'] == 0){
            return $this->error('对不起该账户已经被封禁,请联系超级管理员解封!!!!');
        }

        // 模型处理
        $ModelIndex = new IndexModel($user);

        // 验证密码
        $Pwd = $ModelIndex->checkPass($info[0]['id'],$user['password']);

        $id = $info[0]['id'];
        if ($Pwd){

            // 五表联查,差询登录用户下面所拥有的权限
            $data = Db::field('group_concat(a.controller,a.action) as url')
                ->table([
                    '2B_admin'=>'u',
                    '2B_admin_role'=>'ur',
                    '2B_role'=>'r',
                    '2B_role_auth'=>'ra',
                    '2B_auth'=>'a'])
                ->where('u.id ='.$id)
                ->where('ur.admin_id ='.$id)
                ->where('ur.role_id = r.id')
                ->where('r.id = ra.role_id')
                ->where('ra.auth_id = a.id')
                ->select();

            // 存储后台需要的session
            $list = explode(',',$data[0]['url']);
            Session::set('nodeList',$list);
            // 存储用户名
            $name = db('admin')->field('real_name')->where('id',$id)->find();
//            halt($name);
            Session::set('admin',$name);

            // 渲染后台主页页面
            return $this->redirect(url('admin/Index/login'));
        }else{
            return $this->error('您的密码不正确,请重新输入');
        }
    }

    // 登出
    public function logout()
    {
        $this->success('拜拜,主人, 下次见',url('admin/Index/index'));
    }

    /*
     * 判断权限
     */
    public function judge($auth)
    {
        $nodeList = Session::get('nodeList');
        if (empty($nodeList)) {
            return $this->error('您的权限不足!');
        }
        if (!in_array($auth,$nodeList)) {
            return $this->error('您的权限不足!');
        }
    }
}
